package com.deng.framework.aop;

import com.deng.framework.utils.ClassUtils;

/**
 * 被代理的目标对象
 */
public class TargetSource {

    //对对象进行存储
    private final Object target;

    public TargetSource(Object target) {
        this.target = target;
    }

    //获取target继承到的所有接口(为的是后面Proxy中好进行传参)
    public Class<?>[] getTargetClass() {
        //在实例化对象的时候我们也用到了jdk反射或者cglib，所以和event那个时候一样，要先判断再拿class
        Class<?> clazz = this.target.getClass();
        clazz = ClassUtils.isCglibProxyClass(clazz) ? clazz.getSuperclass() : clazz;
        return clazz.getInterfaces();
    }

    public Object getTarget() {
        return target;
    }
}
